{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Loading of Libraries and Classes.  \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "slideshow": {
     "slide_type": "-"
    }
   },
   "outputs": [
    {
     "ename": "ImportError",
     "evalue": "No module named 'Curves'",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mImportError\u001b[0m                               Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-1-42f8bc91bcdc>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdisplay\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax_colwidth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m60\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mCurves\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCorporates\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCorporateDailyVasicek\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mCorporateRates\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      8\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mBoostrappers\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCDSBootstrapper\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mCDSVasicekBootstrapper\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mBootstrapperCDSLadder\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      9\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mMonteCarloSimulators\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mVasicek\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvasicekMCSim\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mMC_Vasicek_Sim\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mImportError\u001b[0m: No module named 'Curves'"
     ],
     "output_type": "error"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "from datetime import date\n",
    "import time\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "pd.options.display.max_colwidth = 60\n",
    "from Curves.Corporates.CorporateDailyVasicek import CorporateRates\n",
    "from Boostrappers.CDSBootstrapper.CDSVasicekBootstrapper import BootstrapperCDSLadder\n",
    "from MonteCarloSimulators.Vasicek.vasicekMCSim import MC_Vasicek_Sim\n",
    "from Products.Rates.CouponBond import CouponBond\n",
    "from Products.Credit.CDS import CDS\n",
    "from Scheduler.Scheduler import Scheduler\n",
    "import quandl\n",
    "import matplotlib.pyplot as plt\n",
    "from parameters import WORKING_DIR\n",
    "import itertools\n",
    "marker = itertools.cycle((',', '+', '.', 'o', '*'))\n",
    "from IPython.core.pylabtools import figsize\n",
    "figsize(15, 4)\n",
    "from pandas import ExcelWriter\n",
    "import numpy.random as nprnd\n",
    "from pprint import pprint"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Create forward bond future PV (Exposure) time profile"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Setting up parameters  \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "t_step = 1.0 / 365.0\n",
    "simNumber = 10\n",
    "trim_start = date(2005,3,10)\n",
    "trim_end = date(2010,12,31)  # Last Date of the Portfolio\n",
    "start = date(2005, 3, 10)\n",
    "referenceDate = date(2005, 5, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Data input for the CouponBond portfolio\n",
    "The word portfolio is used to describe just a dict of CouponBonds.\n",
    "\n",
    "#### This line creates a referenceDateList\n",
    "myScheduler = Scheduler()\n",
    "\n",
    "ReferenceDateList = myScheduler.getSchedule(start=referenceDate,end=trim_end,freq=\"1M\", referencedate=referenceDate)\n",
    "### Create Simulator\n",
    "#### This section creates Monte Carlo Trajectories in a wide range. Notice that the BondCoupon maturities have to be \n",
    "#### inside the Monte Carlo simulation range [trim_start,trim_end]\n",
    "#### Sigma has been artificially increased (OIS has smaller sigma) to allow for visualization of distinct trajectories. \n",
    "        # SDE parameters - Vasicek SDE\n",
    "        # dr(t) = k(θ − r(t))dt + σdW(t)\n",
    "        self.kappa = x[0]\n",
    "        self.theta = x[1]\n",
    "        self.sigma = x[2]\n",
    "        self.r0 = x[3]\n",
    "        \n",
    "myVasicek = MC_Vasicek_Sim()\n",
    "xOIS = [ 3.0,  0.07536509, -0.208477,  0.07536509]\n",
    "myVasicek.setVasicek(x=xOIS,minDay=trim_start,maxDay=trim_end,simNumber=simNumber,t_step=1/365.0)\n",
    "myVasicek.getLibor()\n",
    "\n",
    "### Create Coupon Bond with several startDates.\n",
    "SixMonthDelay = myScheduler.extractDelay(\"6M\")\n",
    "TwoYearsDelay = myScheduler.extractDelay(\"2Y\")\n",
    "startDates = [referenceDate + nprnd.randint(0,3)*SixMonthDelay for r in range(10)]\n",
    "\n",
    "### For debugging uncomment this to choose a single date for the forward bond\n",
    "### print(startDates)\n",
    "#startDates = [date(2005,3,10)] # or\n",
    "#startDates = [date(2005,3,10) + SixMonthDelay]\n",
    "#maturities = [(x+TwoYearsDelay) for x in startDates]\n",
    "\n",
    "\n",
    "\n",
    "#### You can change the coupon and see its effect on the Exposure Profile.  The breakevenRate is calculated, for simplicity, always at referenceDate=self.start, that is, at the first day of the CouponBond life.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "##### Below is a way to create random long/short bond portfolio of any size.  The notional only affects the product class at the last stage of calculation. In my case, the only parameters affected are Exposure (PV on referenceDate), pvAvg(average PV on referenceDate)\n",
    "\n",
    "myPortfolio = {}\n",
    "coupon = 0.07536509\n",
    "for i in range(len(startDates)):\n",
    "    notional=(-1.0)**i\n",
    "    myPortfolio[i] = CouponBond(fee=1.0,start=startDates[i],coupon=coupon,notional=notional,\n",
    "                                maturity= maturities[i], freq=\"3M\", referencedate=referenceDate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "myScheduler = Scheduler()\n",
    "ReferenceDateList = myScheduler.getSchedule(start=referenceDate,end=trim_end,freq=\"1M\", referencedate=referenceDate)\n",
    "# Create Simulator\n",
    "xOIS = [ 3.0,  0.07536509, -0.208477,  0.07536509]\n",
    "myVasicek = MC_Vasicek_Sim(datelist = [trim_start,trim_end],x = xOIS,simNumber = simNumber,t_step =1/365.0 )\n",
    "#myVasicek.setVasicek(x=xOIS,minDay=trim_start,maxDay=trim_end,simNumber=simNumber,t_step=1/365.0)\n",
    "myVasicek.getLibor()\n",
    "\n",
    "# Create Coupon Bond with several startDates.\n",
    "SixMonthDelay = myScheduler.extractDelay(\"6M\")\n",
    "TwoYearsDelay = myScheduler.extractDelay(\"2Y\")\n",
    "startDates = [referenceDate + nprnd.randint(0,3)*SixMonthDelay for r in range(10)]\n",
    "\n",
    "# For debugging uncomment this to choose a single date for the forward bond\n",
    "# print(startDates)\n",
    "startDates = [date(2005,3,10)+SixMonthDelay,date(2005,3,10)+TwoYearsDelay ]\n",
    "maturities = [(x+TwoYearsDelay) for x in startDates]\n",
    "\n",
    "myPortfolio = {}\n",
    "coupon = 0.07536509\n",
    "for i in range(len(startDates)):\n",
    "    notional=(-1.0)**i\n",
    "    myPortfolio[i] = CouponBond(fee=1.0,start=startDates[i],coupon=coupon,notional=notional,\n",
    "                                maturity= maturities[i], freq=\"3M\", referencedate=referenceDate)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Create Libor and portfolioScheduleOfCF.  This datelist contains all dates \n",
    "# to be used in any calculation of the portfolio positions.\n",
    "# BondCoupon class has to have a method getScheduleComplete, which return\n",
    "# fullSet on [0] and datelist on [1], calculated by BondCoupon as:\n",
    "\n",
    "def getScheduleComplete(self):\n",
    " self.datelist=self.myScheduler.getSchedule(start=self.start,end=self.maturity,freq=self.freq,referencedate=self.referencedate)\n",
    "    self.ntimes = len(self.datelist)\n",
    "    fullset = sorted(set(self.datelist)\n",
    "                               .union([self.referencedate])\n",
    "                               .union([self.start])\n",
    "                               .union([self.maturity])\n",
    "                               )\n",
    "    return fullset,self.datelist\n",
    "\n",
    "# portfolioScheduleOfCF is the concatenation of all fullsets. It defines the set of all dates for which Libor should be known.  \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "portfolioScheduleOfCF = set(ReferenceDateList)\n",
    "for i in range(len(myPortfolio)):\n",
    "    portfolioScheduleOfCF=portfolioScheduleOfCF.union(myPortfolio[i].getScheduleComplete()[0]\n",
    ")\n",
    "portfolioScheduleOfCF = sorted(portfolioScheduleOfCF.union(ReferenceDateList))\n",
    "OIS = myVasicek.getSmallLibor(datelist=portfolioScheduleOfCF)\n",
    "# at this point OIS contains all dates for which the discount curve should be known.\n",
    "# If the OIS doesn't contain that date, it would not be able to discount the cashflows and the calcualtion would faill."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                   0         1         2         3         4         5  \\\n",
      "2005-05-10  0.984088  0.991872  0.981774  0.986068  0.987300  0.998230   \n",
      "2005-05-31  0.977086  0.984309  0.974699  0.977595  0.984295  0.997771   \n",
      "2005-06-30  0.966169  0.969501  0.965633  0.962113  0.985148  0.996189   \n",
      "2005-07-31  0.958750  0.958747  0.955968  0.947552  0.987641  1.001542   \n",
      "2005-08-31  0.956035  0.951574  0.948740  0.934513  0.984228  1.012260   \n",
      "2005-09-10  0.955677  0.949611  0.946653  0.931181  0.981424  1.015136   \n",
      "2005-09-30  0.954981  0.943211  0.942986  0.925730  0.975765  1.020695   \n",
      "2005-10-31  0.952321  0.931296  0.934793  0.920294  0.966648  1.026026   \n",
      "2005-11-30  0.948872  0.918033  0.925199  0.918061  0.953018  1.024059   \n",
      "2005-12-31  0.947159  0.907200  0.917521  0.912426  0.940340  1.015003   \n",
      "2006-01-31  0.950548  0.896972  0.914209  0.903565  0.928476  1.006036   \n",
      "2006-02-28  0.954254  0.887636  0.908710  0.894497  0.922006  0.999423   \n",
      "2006-03-31  0.954360  0.876559  0.896959  0.882248  0.917514  0.987469   \n",
      "2006-04-30  0.950705  0.862996  0.884332  0.873040  0.914632  0.972251   \n",
      "2006-05-31  0.948909  0.848888  0.877165  0.865693  0.908111  0.958337   \n",
      "2006-06-30  0.945434  0.835215  0.873067  0.857668  0.897819  0.954114   \n",
      "2006-07-31  0.944840  0.818452  0.868760  0.848023  0.886276  0.951524   \n",
      "2006-08-31  0.947520  0.803539  0.860522  0.836586  0.877204  0.947985   \n",
      "2006-09-30  0.951249  0.790855  0.850439  0.822752  0.869392  0.948014   \n",
      "2006-10-31  0.960190  0.780493  0.843763  0.805208  0.863955  0.953003   \n",
      "2006-11-30  0.967858  0.771708  0.838503  0.787375  0.862291  0.959851   \n",
      "2006-12-31  0.972455  0.766446  0.835112  0.773342  0.858574  0.964231   \n",
      "2007-01-31  0.975219  0.759896  0.837581  0.763958  0.851010  0.965745   \n",
      "2007-02-28  0.976857  0.756470  0.836301  0.759820  0.844226  0.963183   \n",
      "2007-03-10  0.977337  0.755692  0.834752  0.760475  0.842177  0.962315   \n",
      "2007-03-31  0.982569  0.754013  0.833617  0.762221  0.836353  0.959123   \n",
      "2007-04-30  0.988730  0.750874  0.830526  0.761630  0.827717  0.954173   \n",
      "2007-05-31  0.991429  0.743007  0.822338  0.758425  0.821387  0.952888   \n",
      "2007-06-30  0.992433  0.736733  0.818867  0.754594  0.816732  0.960897   \n",
      "2007-07-31  0.993909  0.731211  0.812188  0.750725  0.811589  0.966664   \n",
      "...              ...       ...       ...       ...       ...       ...   \n",
      "2008-08-31  0.890898  0.708482  0.758393  0.706571  0.762126  0.910675   \n",
      "2008-09-30  0.880093  0.706363  0.757917  0.704528  0.761647  0.906938   \n",
      "2008-10-31  0.867007  0.702919  0.755442  0.699037  0.763966  0.897585   \n",
      "2008-11-30  0.855063  0.701540  0.752119  0.695078  0.765523  0.890334   \n",
      "2008-12-31  0.840281  0.698659  0.746175  0.695241  0.758796  0.883357   \n",
      "2009-01-31  0.835611  0.689047  0.736492  0.699047  0.745167  0.877143   \n",
      "2009-02-28  0.835199  0.683100  0.730683  0.703764  0.735601  0.870842   \n",
      "2009-03-10  0.833691  0.680938  0.729131  0.704569  0.731953  0.868182   \n",
      "2009-03-31  0.833060  0.678078  0.724483  0.704621  0.725886  0.860658   \n",
      "2009-04-30  0.829761  0.672676  0.714914  0.707131  0.718020  0.848605   \n",
      "2009-05-31  0.829233  0.665567  0.705768  0.707042  0.709769  0.841678   \n",
      "2009-06-30  0.836047  0.659515  0.697901  0.708760  0.703964  0.834969   \n",
      "2009-07-31  0.847786  0.654357  0.695198  0.710974  0.699839  0.825195   \n",
      "2009-08-31  0.860098  0.647174  0.695532  0.712920  0.693169  0.819231   \n",
      "2009-09-30  0.871972  0.645009  0.697801  0.714335  0.684837  0.814874   \n",
      "2009-10-31  0.883598  0.641729  0.695128  0.717852  0.676708  0.810160   \n",
      "2009-11-30  0.890637  0.636466  0.692896  0.723605  0.665538  0.806647   \n",
      "2009-12-31  0.896645  0.629481  0.693474  0.724737  0.657270  0.803574   \n",
      "2010-01-31  0.896542  0.621128  0.692637  0.718712  0.652321  0.799980   \n",
      "2010-02-28  0.895100  0.611991  0.689626  0.716837  0.648467  0.794444   \n",
      "2010-03-31  0.891951  0.603733  0.685941  0.712642  0.643137  0.783254   \n",
      "2010-04-30  0.889496  0.599356  0.677134  0.707737  0.635697  0.772378   \n",
      "2010-05-31  0.884536  0.592273  0.670843  0.703600  0.627223  0.765733   \n",
      "2010-06-30  0.877498  0.584376  0.659179  0.701279  0.617512  0.760248   \n",
      "2010-07-31  0.871293  0.577808  0.647791  0.699737  0.611083  0.753318   \n",
      "2010-08-31  0.866410  0.570914  0.639904  0.698020  0.602717  0.745069   \n",
      "2010-09-30  0.860219  0.564314  0.628499  0.691392  0.590900  0.731484   \n",
      "2010-10-31  0.852638  0.558354  0.620984  0.684491  0.582542  0.716469   \n",
      "2010-11-30  0.844255  0.555015  0.615836  0.679398  0.577631  0.704773   \n",
      "2010-12-31  0.838457  0.548834  0.609813  0.676919  0.575892  0.696768   \n",
      "\n",
      "                   6         7         8         9  \n",
      "2005-05-10  0.988623  1.001268  0.972311  0.985363  \n",
      "2005-05-31  0.985204  1.000342  0.962490  0.978165  \n",
      "2005-06-30  0.981538  0.999348  0.951040  0.968010  \n",
      "2005-07-31  0.976732  0.996424  0.942566  0.954127  \n",
      "2005-08-31  0.970048  0.989633  0.934772  0.943915  \n",
      "2005-09-10  0.967776  0.986989  0.933616  0.941822  \n",
      "2005-09-30  0.963008  0.980455  0.932512  0.935565  \n",
      "2005-10-31  0.953362  0.974963  0.937158  0.921650  \n",
      "2005-11-30  0.946618  0.969746  0.944389  0.908584  \n",
      "2005-12-31  0.942169  0.967149  0.944508  0.892984  \n",
      "2006-01-31  0.940722  0.967694  0.942813  0.874983  \n",
      "2006-02-28  0.936534  0.963981  0.934638  0.859481  \n",
      "2006-03-31  0.934221  0.961768  0.923094  0.848041  \n",
      "2006-04-30  0.938091  0.956910  0.911968  0.841580  \n",
      "2006-05-31  0.935313  0.951351  0.902676  0.835839  \n",
      "2006-06-30  0.932663  0.951801  0.894825  0.833095  \n",
      "2006-07-31  0.931178  0.952037  0.888042  0.825548  \n",
      "2006-08-31  0.931013  0.940626  0.881847  0.815263  \n",
      "2006-09-30  0.927725  0.928528  0.876974  0.803460  \n",
      "2006-10-31  0.924040  0.917045  0.870764  0.791332  \n",
      "2006-11-30  0.923708  0.909763  0.866218  0.782338  \n",
      "2006-12-31  0.922653  0.905350  0.861675  0.776339  \n",
      "2007-01-31  0.920448  0.902430  0.860369  0.770454  \n",
      "2007-02-28  0.919273  0.896695  0.860393  0.762739  \n",
      "2007-03-10  0.918570  0.892103  0.861395  0.760169  \n",
      "2007-03-31  0.917109  0.882418  0.863980  0.755974  \n",
      "2007-04-30  0.911695  0.870145  0.873519  0.749228  \n",
      "2007-05-31  0.911393  0.858110  0.879752  0.740945  \n",
      "2007-06-30  0.913930  0.844692  0.884100  0.738097  \n",
      "2007-07-31  0.922431  0.829112  0.884199  0.737853  \n",
      "...              ...       ...       ...       ...  \n",
      "2008-08-31  0.869731  0.737413  0.762230  0.684608  \n",
      "2008-09-30  0.862578  0.733735  0.751458  0.679501  \n",
      "2008-10-31  0.850393  0.728679  0.745789  0.675857  \n",
      "2008-11-30  0.836552  0.722622  0.742687  0.670977  \n",
      "2008-12-31  0.821810  0.718568  0.741132  0.668525  \n",
      "2009-01-31  0.810185  0.713850  0.739917  0.663862  \n",
      "2009-02-28  0.801479  0.709955  0.736428  0.659515  \n",
      "2009-03-10  0.798420  0.710103  0.734398  0.657383  \n",
      "2009-03-31  0.790569  0.711449  0.729331  0.651080  \n",
      "2009-04-30  0.781416  0.709170  0.715308  0.641004  \n",
      "2009-05-31  0.776142  0.701012  0.697711  0.632159  \n",
      "2009-06-30  0.768757  0.692751  0.683249  0.623179  \n",
      "2009-07-31  0.757891  0.689566  0.669609  0.613984  \n",
      "2009-08-31  0.751412  0.684878  0.655800  0.601560  \n",
      "2009-09-30  0.747787  0.680229  0.644805  0.593368  \n",
      "2009-10-31  0.746892  0.675290  0.636824  0.586985  \n",
      "2009-11-30  0.745943  0.670028  0.630201  0.583891  \n",
      "2009-12-31  0.739524  0.668153  0.623572  0.581615  \n",
      "2010-01-31  0.729306  0.663879  0.618134  0.580156  \n",
      "2010-02-28  0.721615  0.659213  0.613501  0.576847  \n",
      "2010-03-31  0.712669  0.655685  0.606360  0.569582  \n",
      "2010-04-30  0.706960  0.655552  0.600606  0.561718  \n",
      "2010-05-31  0.703203  0.652077  0.595120  0.554850  \n",
      "2010-06-30  0.695398  0.647703  0.587914  0.549874  \n",
      "2010-07-31  0.686723  0.641550  0.579805  0.541771  \n",
      "2010-08-31  0.678986  0.635854  0.577091  0.537166  \n",
      "2010-09-30  0.674957  0.629001  0.573847  0.533304  \n",
      "2010-10-31  0.673073  0.623058  0.565413  0.527523  \n",
      "2010-11-30  0.675625  0.618686  0.555506  0.523332  \n",
      "2010-12-31  0.676339  0.612046  0.547957  0.516624  \n",
      "\n",
      "[73 rows x 10 columns]\n"
     ]
    }
   ],
   "source": [
    "print(OIS)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x10b2d9748>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA34AAAEPCAYAAAAdyBZZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmUpFl93vnvfe/7vrFHRu61L11d3UBDQ3fTDbQEtGUh\nCaQDtkeLrRnNaLGNNGDpzJkZLbaOAB/LiJF0hpEER8LW0QhZmz2DLLAkjBmpJYGQoBegoOnu2rfM\nyqysXGKPd7vzR0RlLdSSTWdmVGc+n3PuufddKuKpiMg4+cv7LsY5h4iIiIiIiGxd3rADiIiIiIiI\nyMZS4SciIiIiIrLFqfATERERERHZ4lT4iYiIiIiIbHEq/ERERERERLY4FX4iIiIiIiJb3NALP2PM\nbxpj5owxX77J9jcbY5aNMU8N2s9udkYREREREZGXMn/YAYDfAn4V+Ogt9vkr59zbNymPiIiIiIjI\nljL0GT/n3GeApdvsZjYji4iIiIiIyFY09MJvjd5gjPmiMeZPjDGvGHYYERERERGRl5I74VDP23kS\n2Oecaxtj3gr8Z+CeIWcSERERERF5ybjjCz/nXPOq8Z8ZYz5sjBlzzi1ev68xxm1uOhERERERkTuL\nc+7rTpW7Uwo/w03O4zPGTDvn5gbjRwBzo6LvMudU+w3De9/7Xt773vcOO4ZsIfpMyXrS50nWmz5T\nsp70eZL1ZMyNL48y9MLPGPN7wGPAuDHmDPAeIAScc+4jwHcbY34MiIEO8H3DyioiIiIiIvJSNPTC\nzzn3/bfZ/iHgQ5sUR0REREREZMt5qVzVU+5wjz322LAjyBajz5SsJ32eZL3pMyXrSZ8n2QxmK50T\nZ4xxW+n/IyIiIiIi8kIYY254cRfN+ImIiIiIiGxxKvxERERERES2OBV+IiIiIiIiW5wKPxERERER\nkS1OhZ+IiIiIiMgWp8JPRERERERki1PhJyIiIiIissWp8BMREREREdniVPiJiIiIiIhscSr8RERE\nREREtjgVfiIiIiIiIlucCj8REREREZEtToWfiIiIiIjIFqfCT0REREREZItT4SciIiIiIrLFqfAT\nERERERHZ4lT4iYiIiIiIbHEq/ERERERERLY4FX4iIiIiIiJbnAo/ERERERGRLU6Fn4iIiIiIyBan\nwk9ERERERGSLU+EnIiIiIiKyxanwExERERER2eJU+ImIiIiIiGxx/rADyIvjnKOTdGj0GjSixjV9\nvVenETXoJl0842GNxTPearPeleWrt/meTyEoUAyKFPx+f7ldXu97L/yjE0Vw6RIsLMDiImQZeN7t\nm7WQz0OtBiMjEAQb8EK+BDjXf83SFJKk3189TpL+9iDov16FAoQhGLP258gyWF7uv0eXLl15v64e\nLy/335cgWFsLQyiX++/djVqhsLaMcRrTjturrRW1aXTbLLfarLTbOBz5MCDn++QCn9xgHNoA3/Px\nPZ9gMJ4qTVEMit/4myEiIiLyEmOcc8MNYMxvAt8FzDnn7r/JPr8CvBVoAT/onPviTfZzw/7/vFjf\n9ZF/ymxzlsylZC4lJV0d95cTummLTtqgkzWIaOK5gJAKQVbBzyrYpII3aEQVTFwAL8N4GcZkg3EK\npr8Ok4KXgbk8TnC2S+q1Sb02iWmTmg4xbWLaRLTxsOS84qAV8AhIU9cvQFLXH2cM+v565xzWgmcd\n1jPYtIofj+FHY/jxGDYaw4tG+33vSjOdMaJWkZUVj/qyJQw8RiqWkRGPWtVSG/H6bVAY1mpQqfSL\nmChydKOEThzTi2O6UUQvGYyTiCiJ6SUxURKTZYDzcJkHzoPM4jIP5/rLLh30zsOlFs+DQjkmX4pW\nW64QkytGBIWIIBcRFmL8XIQfRhg/otGOqLcjGq2IRiei2enR6ka0e/3Wjfutl/TopRFpmuHSAJf6\nuCQA5+O5AOMCPPrjK31/nGYpcRYRu5iMGBtG+GGMF0bYIMYLIjw/xgtijB+RZilRnBEn/WaDjCDI\n8K9q1u+vtzbDWgd4GGcxWIyz4K70ZNf2LrP9x45ToiQlTlOS9ErvTIofpFg/xQtSrE3BxiSms/oZ\nzGwbcJikBHERoiIuKkJSxKZFvKwAGBwJmUlwJsaZBLwYbILxEowf9z/bYYOD/qMc//k/Gu4Pu4iI\niMgGMMbgnPu6P6vfCTN+vwX8KvDRG200xrwVOOScO2yMeR3w68DrNzHfpomSmD85/1s8+NzH8ZzF\nyyz+4Jdpl175ZXqnX2KkUKFWrDBaKjNaDSiV+rM8l1uhcGUcBFdmh9bSkqQ/OxdF0OsNxr0r41bb\ncWkpZmGlP9tS77TJTEy1aCiXDJUq1EYMtRHD2BhMTBgmJw3j41AqGopFKBQdJl9npbfIYmeRpe4S\ni51FFjuXWOwcHYyvtE7SIctSii4jzVKWXcZCluLISF0KgHFe/zXqWGib/i/5XtwvUFyAtQG2EOKb\nAN8LCLwrY98LMBgcGY6MjHR17NzldYPeDbY5hyXEI8TLQsgCTBbiVkLSiwFxNyTqhiTdkCQKSOMA\nk+aw5AhMSGhDckFIISxRzo8xWQwZGQkZHQmZHA3ZMZFjctKQKySkxKQuJnUJcRoTZzFJdmUcpzFJ\n1iXO4v7MlhcQ2hzWlPHcIFsaDorIsF9EJiFpHFDM+4xUvUEh7RH43jUzw9c3gGzwPqQuvW2fueya\nmWXr2Wv6OLKcPWM5dcJy5pTl3FnLypJPtVCiViwyWikyMVJkYjRgbAzGxmByEsbH++OREcjlbjxr\neHmGNI77n+skgV//07/mA0/+y8380RYREREZuqEXfs65zxhj9t9il3cwKAqdc39njBkxxkw75+Y2\nJ+HmmV1sQK/K2T//TnK5/iFy1/dBAJ0OnKpDfdCazX6hV6lAtXr7dnm/0dGv3wY9ms0mMMaJE4YT\nJ+D4cTh7ltXx3Jxh796Qu+4Kuf+BGnfd1X/MVuu6tgznz8Pzg+V2+8q2RqOffWwMpqf7bceOfn9o\nPOH+UpN8foWwsIQpzlMo1KhUXsWFCwVOnuSatrAAe/Y69h9IOXAwZf+BjF27M9otn8WFgEsLHhcv\nwsWL/X0v98UiVCf7RcTEBNRqGeVyQrEYk89H5PNdwrBDmOvg+02sbeJ5DTyvThw38DzL3r2P4tzL\nOXo04Jln4Jln4Gtf679Pr3w5vOIV8IqH+/2hQ9Dt9g+VXFrqt8vj1XVnYG4Znh1sn5vr5zx48Erb\nvTtidGSRUmkOzzvH4uIs8/PzzM3NcenSJe69917e+MY38rpHXkehUGB5GU6fvradOtXvz5zpF0Y3\nOgTz8gzqjVo+D5X8tX9sMKbHwsIMM3PnOX/+Spubm+PQocMcPvxmKpWHmLlQ4ehRVtvJk/0i7vBh\nuOceeOtr+p+DZhNWVvqfk5UVmDl7ZXz5s7+y0m/Qf4ypqSttctIxMtIjCJYw5iJpOku3e4anZv6W\nzsiZ4f2gi4iIiAzB0A/1BBgUfp+40aGexphPAO93zv3NYPnTwE865566wb4v6UM9//JLp3js/34z\n7v88/YL+XZb1i6l6/UpBdX1bWoqZmWkxP99lYSFiaSmlXodWy6PTCYiiHGlaon+9nxhjEiqVeXbt\n6nLvvQGPPDLOI49McOiQYe9e8F/gnwycc8zNzfH888/z3HPPcezYMebnF7lwIWV+3rC4GLCykqPZ\nLJMk44ThPqzdCUyTJONARJIcpVxeYP/+jPvuK/GGN+zgW7/1EPfeW8batWdZXl7my18+wuc//zxP\nPHGar351nuPH63Q6OYJggiAYx/PGsXYUqAEjZFmVLCuTJCXiuASAMRnGLJNlX2Vq6hL33Wd44xvH\necc77uHVr96FeSEn1w2srKxw/Phxjh07xrFjxzh9+gxnzvQ4fz5gbq7E8vIoSbKHILgX5/aTJNPk\n8w3GxlbYsaPDzp0x5841OXkyY2WlhucdwNqQnTsjXvayPIcOBezfD/v3w4EDsG9f/728XECtrPSL\n0KuXV1ZgaSnjwoU2c3MRS0sJ7baj24UoMiSJT5oGOJcDQjyvh7UxQZCRyzmCwLC0lMeYBknyLJXK\nBQ4dynj44Rrf+q37+fZvP0Sl8gLeQPqfp4sXL3Ly5ElOnTrF0aNnOX58mbNne8zMJFy8aFheDjBm\nmkJhH76/C5gijsdoBhdxP/Bm3AcvvOD3R0REROROdycf6ikDp2brEFVf0L9ptVrMzs6utpmZmWuW\nL69rNpvs3DnNjh2TTE9P8PKXTzA9PcqOHaNMTVWZnq4wOVmmWCyQJJYkqfC1rzX44he/xFNPPcWH\nP/wUv/iLLR544AEeeOABHnzwQR588EHuuece7FVVV7PZ5OjRozz33HOrRd7zzz/P888/TxAE3HPP\nPdx7770cPnyYw4cPMzY2xujo6DV9qVS6YdEUx2N89atf5cknn+TJJz/N7/7uk/zMz3yFvXv38trX\nvpaHHnqIhx56iAceeIBKpUIURTz33HMcOXKEI0eO8OUvf5kjR46wtLTEfffdx6te9Sq+6Zvu50d/\n9Ft45Stfyfj4+I2LNef6x7k2GtBYhMZpegsNsm5EYbpKw47yxVMrfPYrX+FzTzzBhz/8t1href3r\nX7/aHnroIUqlEs45FhcXVwu7y+1ysddqtbj77rtX2/33v4q3vGWa6el+m5qaYmRkZDVnksDZs6Mc\nP57j2LEOZ84kvOlNBzh0qMr0dJe5uc/z9NN/zmc+89d85jOfZ37+HoLgTRw69EYOHnwjU1NTAExM\n9AupJDnJ3NwJZmdPcuLECU6e7PczMzPs2LGDu+66i1e/+gC7d+9gerrC1FSeyUnL5CSUyy2iaIFm\nc4lmc5lWa4VWq06n02bXLpia2k8Yvpxz50Y4cqTN00+f42d/9kl++IdneO1rX3vN6zU5Ocni4iKn\nTp1aLe6u7k+fPk2hUODgwYMcOHCAAwcO8JrX7OGtb93Jzp39tmPHDkqlElnWJU0bJEmdND3FB375\nS7y/1XlBP2ciIiIiL3UvhRm/Xwf+wjn3h4PlZ4E33+hQT2OMe8973rO6/Nhjj/HYY49tWO719m8+\n+ll+7+M/yruSKvQSiFKI0/447o9dnLDSbrPQanOx2SbKMoqVHKVqSGnEp1QzlGtQGkspjSaURjuM\n1FJqfkgYBfhdH7/nYzsWv+thux5+B2zH4HUctuMwUUqv3KZT62Cmp/F230245z5a5cM8Xx/hyZOz\nPPX00zz99NNcuHCB+++/n3w+z/PPP8/i4iJ3HzjAPfv2cc+uXdy7Ywf3jI1xT63GOAyKpwa0WiRl\nSzxmiGoZUTkmtk2S3jJpd4mstQyNRdzKMiyv4JkQf3QvwdhdhJP3kJ+4j/zkq8jK4zw3M8MXnn2W\nJ770JZ588kmOHDnCxMQE8/Pz7Nu3j9e88pW89u67ec2+fbx8xw525fN4l4+tXFy80l+eMm00+scZ\nDsau2exfxrJSwpULZKWQrBjgAoNtJXj1HqbRhuU6JpfD1WrExSIrxnAxijjXaHB6ZQXKZRqdDg4Y\nq1QYrVQYLZf7rVhktFSi6Bsy1yEdtMxEOBKcS3FpjEtjiAcnYMYRphdDFOMlHja2mNSQlDJ6Y450\nugo7pjC79uLtPoTbcZjn6wU+8/wCf/25z/PZz36W6elpgiDg5MmT5HI57rrrLvbv38O+fWPs3l1i\n926f6emE8dEVXHKWqHGWpDWHV+9QaI2Qb1XJd8qEzQJhMyCoG/x6hl2MMIsdvKUGpt7E5QOyWo60\n6hGXE3qFNr1CnWykSFSc4nyryrF5OHKuyReOnaORpFQ8j4NjNfZXCuwu+uwMDVNByrifMGp7BFkP\nol7/NUkTcGCcwaRgEoeJHV7PYXtguwavB17P4SXwh68wfO9X0m9oVlZERETkTvL444/z+OOPry6/\n733vu+GM351S+B2gX/i96gbb3ga8yzn3ncaY1wMfdM7d8OIuL/VDPX/slz7OB3/qH3C6ZkgtZH7/\nwoiZb3A+g+YIraVgPPLGEiYeNjJ4kcFG4MWDPgGTACmQGRw+mbM4Z/u9l8PZHJlf6LeggAtKuLCI\nCwICt4TPPCaYw7CESdp4nRjbyLBdSMqGqBjQ9HOcdzk6mce4FzNiM0Kb4dsM6zmM73AWnOdwxuFM\nBmS4NMNvg98w+A2w7QxnPdLQJ7U5ElMgySrESY0kmsQFCUHlAja/hA0aeKaDTWL8psG2DbbbvzeE\nCwJMkCPyLUGSYLo9SGKcn8MFOVI/TxLkSIKQOBcS5wKifEBc9InLGWktIalFxGNdkvEOyWSLdLKF\nCwysVDH1KqyMwEoVohBv9BJmfAE3ukRabRIsWfIzluJsSmE2IXcJwmULDctS06dagLBsyPKQ5h1p\nzpHmMtIwJQtTnAc28vESH5sGeImPiT2IPOh40PagaXGdELIxsnSMLJ0g88ZIbYXEKxP4DXK5GfzC\nWaw/h5cuYrtNbKuLXUnwG46kYkhqlrofkFnI+wk+KaQZXgS2A7YHXs9g4kEhlQHGw+GTkielSEKJ\nxJWJGCFijIgxekyQUMbZAGwIgU8a+2SRR2BWKHgz5JkjZ+bxi7N4pQVMrokJYgxp//m64AqQheBC\nDxd4uNCHMMDl8hAWcPki5CuQH8HlamDKZFGI6/Rb1siTreRJmz5xxyfp+MSdkNOlz1H1fo/7n2lR\nKxeG+0MvIiIiss7u2EM9jTG/BzwGjBtjzgDvAULAOec+4pz7U2PM24wxx+jfzuGHhpd2Yy3OHiMx\nhqdG/4IgAT8Gvwe24bAxeHG/TwNI8oYkhDg0RDmIQuiWHN0QOkG/z3IGlzeYwOBbD98afM/gW0OA\nw8cR4AiylMBlhGlCkCbYJCVq+iR1i1nx8FcMhSVIPcPyWEbr1Wcp7jtCtfYctfAkI9l5SnGP1BWY\nT0skSYGsVyDpFTHdIqZTxG+W8Fol7EqZLCqRuCpRYYJkahR3Xw2zY5z8jhKViZDqZI78VEgwHlAe\nMQRhB9fqEM92iC906c71WL4YsXwpou3OkBRP4Kon8GvHCWunCIJlvLNTpAVIpvoFHKUOLoEssmRx\nQJZ4ZGlIRglniuAV8ajip1VyWZVCVqWcjVChQm2hQmjyGOMw+QxTBLPLkaWGXj1P90LIyhGfSxcy\n2stLtDsXWU4uku5Yont4kc7ORaLxBUylTi8qk7ZGMY0xvMYodmWMYHG03y6OEi6WCNr9QthrZRjP\n4FUsftUSVHz8qo+dstiSwc+lWD/G+l180yV0LQppi6QFnfqrieoBUd2nV/eJ6gFx02LzGWa6jbf7\nKGbiOF7pNCY1eK0JbH0SszSNa9VIWyFxO8SU89jJEt5kCX+ySDCRIxgL8Md8/FGfYDTAH/XJjVhK\nZUdQSPBzMZ6L+leyudx8HxeGxC2f3iVLd97Qm4fGbEp3JqF3PqZ7pks8H2OmLdneLqzk8doeXMpw\nvQzXcZA5vIKHV7DYgoeX9wbLHrZksRWLLVv8SR97sD+2FUuxfGVb93fmCB73mFmsq/ATERGRbWPo\nhZ9z7vvXsM+7NyPLsHXnT1H3ff7oBz9Ez+vRMz26tkvP69GlS8fr0DM98LjhzdevXueZAGfzYAs4\nW8CzRYxfwNgi2AJ4eZzNk3m5fjMhiReSmgBnLCWTUiahahIqJqFqUkY7jollj+qSJV1+DY2l19Jd\nDFhY9CGFqBgRFSN61R7dYpd2vk0j32M5H7NUSFgspFwqpLR86NAh9hZIbJvYWyL25oi9ApFXIPZy\nWJeQa3fJNbvkXA+MpRcU6e4v0N0fkjMpFWJGvClq3iRj9vVMBB4Tvs9OL2H3/bPEoU/HL9KmSMvl\n6TqPnnP0MkfXZfQyR88xWAc959F2Hl082pmh5aCdQSuD0EDZelSsR9VaKtYSeh5zccq5XkTPRezN\n5dib283e/CH2BiEHGz675wx7Zh3l8yl8McaEHmnJEBUNnTHo7IZmwdHIO5byjuV8xmIu41KYsZBL\nmSfhYhxzMYpoZxETQcBUEDAVhkwGIVNhmcmr1o0HAStJwvlej5koYqbXuzLudMkuJRyqj3Go/s3s\nW3kzO5YMmQcLFcdcJWOmmHCmlDJbTglqPhPFHJNBwGTgU7OGES+haiLGfI8J3zLu+4z7HiN+/7Nn\njMFgMMYHyhgqq+suc84xn6Sc6Eac6KYc72Wc6Gac7MFMy3H3imNfu0jHd7RyKe3A0QwyWkH/Th0R\nKYlLiTH4OCyOwPT/iBGajBwZIRkBKSEpweXmEnwS3nSwzQ/8V8OJhWVesW96eD/wIiIiIpto6IWf\nXJE1Zqn7Ae/8799J4AUENli9J5vv+avLzjkyl/XvpTa4T1qapTddl2QJcRYTpRFx2u+jNFpd11/f\numbd5ce6ujWzlHopIytmZLuu3WaMIe/nydkcOT+3Oh71S+y4bl3OzxHaEIO5wfPEJFmPVuZYyRwr\nqc9K5pNlCflsmSA9h5+0iNI2nbhDJ+ms9q2kw0Lc4emkQzfpYjDXFcPXtssFs2c88sYQuoz8VffF\nu3yvvCiNiZxHD0vPhJw3AbEJiZ0j686TdM4T9y5x0gs4b0OesuHq/zG0ITmbI5wICaaD1ffaOYej\nf1iy67p+Gxym7LgyBigbQwWD83xSWyb2q5z2K5zwSiR+hdiWSGyZ2C+TeCV81yOfNilkLQpZm2LW\nYsR12UWHoosIyxZbtczt9VnwLFEa0YpbtKIWrbhFrtViYrlD44zHGQKeI0filwjyUwS5CUxujMyv\nkvqVQaviTIiXNrBxHS8ZtLiOl6xgkiZpMEqa30mS20Ga34nJImxvFr97Adudxe/NYruzlHtzzLmY\neQyhDQlsQGhDyl7A2GC5f4/CEN8GBDaPZ/N4Ntf/Y8bgjxiZ12+pCUkHf9BITUDP+ByZHKPacxw7\nO8e3Pnjv5v6Qi4iIiAyJCr87iNdZpGF9vuXgtww7irxAzrnVormX9FYL6l56ZRylEcDq7NfVM2FX\nZsrM6j6D47NXC8Gr+8xlN9x2ufC/fPP0JEtuOU6yhNCGlMISpaB00z7v5295IZRelrEQx8xHEfOD\nGcr5wfKlJGFnGHJPocA9xSKHCwVGg+Cmj7XRfqf9x1TjjGNndTsHERER2T5U+N1BwqRBww7vF2L5\nxhljVmf4ymF52HE2Xc7z2J3LsTuXG3aU2xo5uAcHzF04N+woIiIiIpvGG3YAuaKQtGmp8BPZUDum\nxqj7Pp3ZU8OOIiIiIrJpVPjdQYpJh7YKP5ENtbtUo+4HpMs61FNERES2DxV+d5By2lPhJ7LBpvNV\nGn4ArUvDjiIiIiKyaVT43UEqaY+eCj+RDeV7lqYN8aPGsKOIiIiIbBoVfneQShIR+eGwY4hseU0b\nEKbtYccQERER2TQq/O4glTQmDTXjJ7LR2jakkHaHHUNERERk06jwu4NUkpgslx92DJEtr21DSklv\n2DFERERENo0KvztEmmWMRAm2pMJPZKN1/ZBSFg07hoiIiMimUeF3h1iot6h2PfzR4rCjiGx5sQ2o\npCr8REREZPtQ4XeHODtfp9r1CHfUhh1FZMuLgxyVNB52DBEREZFNo8LvDnFqpk61B/mdO4cdRWTL\ny3J5KokKPxEREdk+1lT4GWO+2RjzQ4PxpDHm4MbG2n5Oz9UZiTIqh+4edhSRLc8V8lTjZNgxRERE\nRDbNbQs/Y8x7gJ8CfmawKgD+w0aG2o7OXLhIJc4Ye9krhh1FZMvzqkWqkaMb6zw/ERER2R7WMuP3\nD4G3Ay0A59wMUNnIUNvR4rmjdKzHroN7hh1FZMvzxwtUux4XlhrDjiIiIiKyKdZS+EXOOQc4AGNM\naWMjbU+tuZPU/YCp2uiwo4hseeHOGpWe4fxCfdhRRERERDbFWgq//2iM+Q2gZoz5Z8CngX+3sbG2\nn2xllrr1qeQ0mSqy0cI9O6n24OTM8rCjiIiIiGwK/3Y7OOd+yRjzFqAO3Av8nHPuv214sm3G616i\n6QcYY4YdRWTLC/fsoxplHDs7P+woIiIiIpviloWfMcYCn3bO/T1Axd4GCqMGdRsMO4bItlA6eJBC\nmnF29sKwo4iIiIhsilse6umcS4HMGDOySXm2rXzSpqXCT2RTTO+ZouH71GdPDDuKiIiIyKa47aGe\nQBM4Yoz5bwyu7AngnPvxDUu1DRXTLm0bDjuGyLawuzpGw/dJFs4NO4qIiIjIplhL4fexQZMNVEp7\ntG1x2DFEtoWpfJVjNiBr6Bw/ERER2R7WcnGX396MINtdOY3o2tqwY4hsC6Ef0rABtrcy7CgiIiIi\nm+K2hZ8x5iSDe/hdzTl314Yk2qaqSUTk6xw/kc3StAFhrBu4i4iIyPawlkM9X3vVOA98DzC2MXG2\nr0oaUQ9zw44hsm20bEA+6Qw7hoiIiMimuO0N3J1zl65q551zHwS+cxOybSuVJMHl88OOIbJttP2A\nUtYbdgwRERGRTbGWQz0fvGrRoz8DuJaZQlkj5xzVOMEbLww7isi20bUhxbQ+7BgiIiIim2ItBdwv\nXzVOgFPA965XAGPMdwAfpF9U/qZz7gPXbX8z8MfA5Rtufcw592/W6/nvBCutLiM9CGulYUcR2TZ6\nfkA5i4YdQ0RERGRTrOWqnn9vo57cGOMBvwb8fWAG+IIx5o+dc89et+tfOefevlE5hu3cQp1q1yOY\nqg47isi2EfshlUSFn4iIiGwPtz3HzxjzE8aYqun798aYp4wx37ZOz/8IcNQ5d9o5FwN/ALzjRjHW\n6fnuSGfn6lS7UNg3PewoIttGGoZU03jYMUREREQ2xW0LP+CHnXN14NuAceAHgF9Yp+ffDZy9avnc\nYN313mCM+aIx5k+MMa9Yp+e+Y5yYWWYkcpQPHBp2FJFtw+VDKokKPxEREdke1nKO3+XZtrcBH3XO\nfdUYs5kzcE8C+5xzbWPMW4H/DNxzs53f+973ro4fe+wxHnvssY3O96KdPHuBcpxRPXzT/5aIrDO/\nXKC6kpJmKdazw44jIiIi8g15/PHHefzxx2+731oKvyeNMZ8CDgI/Y4ypANmLi7fqPLDvquU9g3Wr\nnHPNq8Z/Zoz5sDFmzDm3eKMHvLrwe6lYOHeMjvWYPrjv9juLyLqwtRzV45ZLjSZTIyPDjiMiIiLy\nDbl+sutffFkZAAAgAElEQVR973vfDfdby6GePwL8NPCwc64NhMAPvfiIAHwBuNsYs98YEwL/GPj4\n1TsYY6avGj8CmJsVfS9VnQsnWfEDdo+NDTuKyLbhT1eodg1nL+qWDiIiIrL1reWqnpkxZg/w/YMj\nPP/SOfeJ9Xhy51xqjHk38Cmu3M7ha8aYd/Y3u48A322M+TEgBjrA963Hc99JkpVZ6r7Pzlx52FFE\nto1wxw6qPXhips5Ddw87jYiIiMjGWssN3H8BeBj43cGqHzfGvME59y/XI4Bz7pPAvdet+42rxh8C\nPrQez3Wn8jqXaPoBnlnLBKyIrIf8/r1UI8fJ2eVhRxERERHZcGs5x+9twGuccxmAMea3gaeBdSn8\nBPyoQd2Gw44hsq2UDt5NJU45PTM/7CgiIiIiG26tU0y1q8a6CsI6yydtWjYYdgyRbWX8wEEiz2Nh\n5uztdxYRERF5iVvLjN/7gaeNMX9B/9YOb6J/sRdZJ6W0S0szfiKbatfEKHXfpzt/athRRERERDbc\nWi7u8vvGmMfpn+fngJ9yzl3Y6GDbSTHp0bGlYccQ2Vami6Oc9X3SlZlhRxERERHZcGuZ8QN4A/DN\n9As/H/ijDUu0DZWziK6vWzmIbKaczVG3Aaazpe4OIyIiInJDtz3HzxjzYeBHgSPAV4B3GmO29FU2\nN1s1iYh8HeopspmMMbRsQBCvDDuKiIiIyIZby4zftwAvd845WL2q51c3NNU2U0ljlsLcsGOIbDst\n65NP2sOOISIiIrLh1nJVz2PAvquW9w7WyTqpJAlZmB92DJFtp20Diml32DFERERENtxaZvwqwNeM\nMZ+nf47fI8ATxpiPAzjn3r6B+baFahxjJ4vDjiGy7XRsQEmFn4iIiGwDayn8fm7DU2xj7W7MSM9h\na+VhRxHZdrp+QDlrDDuGiIiIyIZbS+F30Tn3zNUrjDGPOece35hI28vsYoNq1yM/VR12FJFtJ/YD\nymk07BgiIiIiG24t5/j9R2PMT5q+gjHmV+nf1F3Wwdn5OtWeobBvcthRRLadJPSppPGwY4iIiIhs\nuLUUfq+jf3GXvwG+AMwA37SRobaT4+cuUY0cpYMHhh1FZNtxYUglUeEnIiIiW99aCr8Y6AAFIA+c\ndM5lG5pqGzl2aoZynFE6eNewo4hsO14xpBrHDO5WIyIiIrJlraXw+wL9wu9h4I3APzHG/KcNTbWN\nXDx3nLa1TB3cd/udRWRdeSM5ql2PZk/38hMREZGtbS2F3484537OORc752adc+8APr7RwbaLzuwp\nVgKfXaPjw44isu3442WqXY8z8/VhRxERERHZUDct/Iwx3wLgnHvCGHPwus2tDU21jcRLM9T9gKmC\nruopstn8yQmqPcPxcyr8REREZGu71YzfL101/n+v2/azG5BlWzKdBZo2wHp22FFEtp387t1UI8fp\nCyr8REREZGu7VeFnbjK+0bJ8g/yoQcMGw44hsi1V7j5MNUo5O7c07CgiIiIiG+pWhZ+7yfhGy/IN\nyidtmn447Bgi29LY3YcJMsfs7IVhRxERERHZUP4ttt1ljPk4/dm9y2MGy9ef8yffoGLSpWVV+IkM\nw86du6j7Pq25E8OOIiIiIrKhblX4veOq8S9dt+36ZfkGldKIji0PO4bItjRZqXHJ94kWzw87ioiI\niMiGumnh55z7y80Msl2V0oiODvUUGYpSWOKUH0BrfthRRERERDbUWu7jJxuokkZEfm7YMUS2Jc94\nNKyPHy0PO4qIiIjIhlLhN2TVJCYJ88OOIbJttaxPLmkOO4aIiIjIhlLhN2SVJCbLqfATGZaWF1BM\n28OOISIiIrKhbnqOnzHmE9zitg3OubdvSKJtppqkUCwNO4bIttXxfYppd10f07n+V6cxuuWpiIiI\n3BludVXPy1fu/EfADuA/DJb/CTC3kaFejF/47Sdvus14GX6Y4ocJQZgOxil+kGKDBBv0x46U1KUk\nWUKSJXSjmFY3odWJaXUSWt2YTi+h3Y3pRgmdKKYb9cfOGSwB1gT4hFjTH1sCfC+4sm2w/t1RSlir\nbOIrJCJX63k+xeIZ7vvwfbfcL3MZSZYQpwlJmvb7LCHNBt8VLiF1CZlLyUgxGHxy+CZPYHIEJo9v\ncqvjwMsRDvrAyxF6OawFz2Z4NsN4V/rLDZORuSvt8vdUmqUkaUqUJMTpYDzImWYp8WAf5xy+CbEm\nJDAhvgkJvBz+VePA628LvP7yv/q2/5k33fOaTXo3REREZKPc9qqexphfds699qpNnzDGPLFeAYwx\n3wF8kP5hp7/pnPvADfb5FeCtQAv4QefcF2/2eB/42j+/+ZM5g0t9XGZxqSVLLVliyRJ/dZzGFoPF\nw8c4SxoHuNQn8AIC3yf0A3K+T84PyIU++SBPPiyTDwOqoY/nOVIXr7aYLomrkxKTMVhPvLo8slIj\nnFbhJzIsLitT+9sf4Pmv/a8338k4XGJJYx+DJfR98qFPIW8p5X3KRZ9q2ac2Yhmp+JRLFutnxFmP\nxPWIsi6x6xG7fp8MxonrkdAloUfH9YgjQxx5RD2PXvdKf3mcpR6+9TB4uMzgMh8yS5pYyHwCawl9\nSy7wyecspYKlXPSplC0jFUupZEhdTOKifqM36CNS1xv0EV0imvR4LvgDfrH5Kd700yr8REREXupu\nNeN3WckYc5dz7gSAMeYgsC7HJhpjPODXgL8PzABfMMb8sXPu2av2eStwyDl32BjzOuDXgdff7DE/\n+z/+zk2fb2xsjFJpB2fOwJkzcPo0XzeenYXJSdi9G2o16HSgXoeVFVhehnoDikUIahCOQGWkv9/I\noK9Wr7RK5cbjctlhTJvFxUvYn/8MpT2T6/Fyisg3IKxe4kDnC/z6v76Py0dmXt87B3EMrVb/+2Bx\nEZaW+u3y+PnT/d7zYHQUajVLrVZkZKTIyAhf1yqVDGubZNkSSXKJOF6hUnk5zeY0x48bjh2DYxfg\n+HEoF+Duu+HgQdi/v//9tGMHWAvdbv97qtG4Ns9qvhmYGYyNufb7qlaD2nXfYcVijLUNYJlf+dLf\nMr+iW12IiIhsBWsp/P4X4HFjzAnAAPuBd67T8z8CHHXOnQYwxvwB/RvHP3vVPu8APgrgnPs7Y8yI\nMWbaOXfDw01f/eraTZ8sTfNAm1JpkR07Ig4fDnnggXG+7dsK7NsH+/bBnj0Q3uK2elnW/wXrciG4\nstJvMzNtTp5c5MKFNs88E7O0lLKyktFsGlotS6cTEEU54rhAlpWBPMaMskyd4sHdL+xVE5F1kxRC\nJrzjfOePvPjHyjLHqVPzfOlLZzh+/BIzMy0uXOhy8WLE0aMJS0uORsOj1bJ0u3l8fwxrx/G8Gs7t\nIElO4ft/wcGDGQ8+WOUnfmIfb3vbvezY8eIuANVoNDh27DhHj57jzJkVZmbazM62uXgx5ujRlKWl\njHrdo9m0pGmZMJwiCCZo3LeLi+2nX/wLIyIiIkN328LPOfdJY8xh4GWDVc8653rr9Py7gbNXLZ+j\nXwzeap/zg3U3LPzO/vwf3fTJ8tUSrRx8ZXaGJ06c4DPPPMOv/F9fZueuXTz88MOr7YEHHqBYLF7z\nbxuNBqdOneLUqVOcPHlydXx5OY5jDhw4wK5duxgfH2f//gkmR0eZrlSYKpeZLJUYy+UYy+ephSFB\nnNFZWKH0zxoUDh5c+ysmIusqKRbIJ+ma98+yjPPnz3Ps2DGOHTvG8ePHrxnn83kOHTrE3r17mZyc\n5PDhSR59dJLJiQmmazWmCgUm83lq1hJ0u9C4iKsfI2suYcZ3coECnz9zhr989rN86EN/x7/4F89y\n//338+ijj/KGN7yBRx99lF27dl2TyTnHhQsXOH78+DXtxIkTHD9+nGazyV133cWBAweYmppiYmKC\nBx+cZGJigsmxMaZLJSZzOcbDkLJzmEYDV7/Ij7/3c/yXbme9X3IReQE+9bFP8mf/x/uHHUNEtgBz\n+epzt9zJmEeBA1xVKDrnPvqin9yY/w74dufcPx8s/w/AI865H79qn08A73fO/c1g+dPATzrnnrrB\n47n/7S67uvzomMc3jV11x4peTNjyCZshwYrD1hNMNyYpFWmHeRacY6bX40y7jatWCatVus0m3WYT\nP0kYy+cZzeWoBQEVayl7HkVjyLkMm8aQDFoUY6IEMofLW7KcJcsb0rwhzTvSXEaSS8jyjk6+yrnf\n+ByP7n/5i305ReQb8O/e8ggP/8UT/NW3v/Wm+7gso7GwwNL58zQvXmS8UGDPyAi7KhWmCwUmwpBR\n36dqDEHcJes0odvG9bqYThfT6WFaEc6DrOSTFS1JEdKCIykkxIUEl/Pxm5BfzhEuOvxLPVypQDY5\nQaM4woxzHGs0+OLcHCv5POP33UccRSyfP09jfp6RMGRvrdbPVCwymcsxFgSMGEMhTXDdJq7bwnU7\n0OkMMvUwUUJW8MlKlrRoSIqOpJCR5GOWv1Ti399b4xeeOHvT10ZENtZPv/pBfuzklzlS1fUAROTG\njvRijvSS1eXfb/Rwzn3dpcVvO+NnjPkd4BDwReDyn8Udg8MvX6TzwL6rlvcM1l2/z97b7LPqe07+\n1pWFk3Dqqm2JFxBNRnh7T2HvO4bZewZ2ncerXcAziwTnSlQvVLjn0iTzF6DTzJjYM0qlMkGxAn6Y\nYvIxFGKaxYh6OSIrdcmKKS4p4OIyLhon61XIeiO4ZhVXH8GtVHErNdxKDeoVvKU8Xj2H1zE8ed8k\nbx/XOX4iw5J7zSsInvkS3/n//dlN9zGA70M+b8jvNphyl6TcJSnNE1c84gosVTLmqwlZAchyOFcg\nSwtkySSuVyFrl3HNCiyXYamCq9dwKxNk58bJmmO4LE8weh5//3OYR4/DnjMwNospXsBLT1E67fHI\naXhz1RHNduh+4TN4QC7nyE14eOWUpNQlLc0RVwxxGToVR72akZRTMDlclsO5PFlcxsVTZJ0yWauM\nWSnjlstQH8W1xsgujeMak3xx4pcopzf9uhWRTZBPevyX6V286+iZYUcRkTvUd123/Ps3uZ3UWs7x\ney3wCreWqcEX7gvA3caY/cAs8I/p3y7iah8H3gX8oTHm9cDyzc7vA/jYEzf/i1jPeSy7Edr1nSQL\n30y24GEugn8Wpld6HPRmmA7PMrLnLPlXnqVQWcR1ynS6Neq9Kr24Sjet0EpHaLQqLLeqLHoVFoIS\n9YKhXuzP6HnVDC/n8POOoOAI85ArQqEA5dBQsR4jnqHqW35iNuWdhZuflygiGyu57/XM/uvP0ivf\n+isu6xTJVmrYpSp2cYTgYg1veYSoUSNZHiU2o6R2DJMv4436hNWAQtmnWPYp7wioVgJyZR9bstii\nxQszrInwTA9LD5N0iZd201t4Hd05R28+Y/mZlPpMSm+hheedgd2n6b7pLPGBM9idZ3CpT9YYwayM\nYJdG8BdHCOZHMEsjJMs14myUzIzhciN41QB/xCdf9ilUAkqjPrX9IWHJYksWr+BhgxTrXc7U5el3\nB1TSaJPeCRG5kUIa0ba3uPiAiMgaraXw+wr9+/jNrveTO+dSY8y7gU9x5XYOXzPGvLO/2X3EOfen\nxpi3GWOO0b+dww/d6jF/++LKTbdZF5NL6wRJncAu440u4pUWMbsXeT5p8+dZTJRGxGlMnMVkLiMo\nBoSVkNBeaYENrlkObUjVCxizAQkhXePTJaCLT52AXhwQ1UN69ZDIC4lNrt+8HNOeIbRreRtEZCPs\nfHg/H/vwW3jXQ++6svL6GtBBWkjp7o9YeXnEYiFiId9lMYhYTmNW4oSVNKKRztDMHK0MOvh0TY4O\nAW0T0iHA4iiSUDIJ5Syl7GWUSal6jmII9emQhakc8y/zmUs9cgb2BB77wjz7c/dxd/IAh5YC9i+G\njFz0cL4jGk2p74lYLsQsFSMWCj0W/aSfK0mopz3qyYV+Lmdo49NyAS18ms6Sw1H2UqrGUfEyqh7U\nLIxYeE2+wGgSb+r7ISLXKqYRi+G6XExdRLa5tVQcE8AzxpjPA6sXdXHOvX09AjjnPgnce92637hu\n+d1rfbzZb/+f1iOWiGwTB6cP8sl7Psmf1P/kpvs45wjbIYV6gYJfoBBc6fN+noJfYMovsP+q9Z7x\nSLOU1PVvop64lE4GLWdpOksLn7bzaeFzjpAullzaIB8vsj+6yKFonjRu0Et7XEh6nEq6fCrt0Ut6\n9AZ9YAPy9Tx5/9pW8AvXLNcG6wIbXJMpzhI6zqOFT4eQtglpEXLJhHRNjkOlMvuWk5u+LiKy8cpp\nzIyfG3YMEdkC1lL4vXejQ4iIDMvLJl7GiZ84MewYd6Rf+MDnqCYq/ESGqZxGRP6Lu6WLiAj0D6+8\nJefcX9K/r15l0L42WCciIluYP1KiGmX0Yh3uKTIs1SQmzRWGHUNEtoDbFn7GmO8FPg98D/C9wN8Z\nY757o4OJiMhw2Yky1a7H7FJj2FFEtq1KkkCpOuwYIrIFrOVQz38FPOycmwcwxkwCnwb+n40MJiIi\nw5XfU6PaM5y+uMKBqbFhxxHZlqpJQr6mq3+LyIt32xk/wLtc9A1cWuO/ExGRl7Bg906qPcfRM/O3\n31lENkQ1Thnds/f2O4qI3MZaZvw+aYz5r8DvD5a/D/jTjYskIiJ3gmD3bkpJxtGTM8OOIrJtVaOU\nu+9/1bBjiMgWcNvCzzn3vxtj/hHwzYNVH3HO/dHGxhIRkWEb2beTtrVcPH962FFEtqVuq0slgje8\n5U3DjiIiW8Ca7hzunPsY8DFjzAT9Qz1FRGSLm945ST3wac2eGXYUkW3pc3/+1zziw649O4YdRUS2\ngJueq2eMeb0x5nFjzMeMMQ8YY74CfAWYM8Z8x+ZFFBGRYdhVGqVufZKl88OOIrItffXvnmQl1GUV\nRGR93Orb5NeAf0v/3L4/B/6pc24H8Cbg/ZuQTUREhmhnfoSGH2JaOtBDZBjmT5+mHqjwE5H1catv\nE9859ynn3H8CLjjn/hbAOffs5kQTEZFhCv2Qpg2wUX3YUUS2pfbFi9SDNZ2VIyJyW7cq/LKrxp3r\ntrkNyCIiIneYlg3JJa1hxxDZlpJWg4avwk9E1setvk1ebYypAwYoDMYMlvMbnkxERIauZUOKSW/Y\nMUS2Ja/bouEHw44hIlvETQs/55zdzCAiInLn6diQYtocdgyRbSmIuzRsOOwYIrJF6IxhERG5qY4f\nUkqjYccQ2ZZySY+m1YyfiKwPFX4iInJTkZ+jkqnwExmGQhrR0oyfiKwTFX4iInJTiZ+jksTDjiGy\nLZWSHh0VfiKyTlT4iYj8/+3deZAk6Vnf8e+Td1V1VXdPz0zv7M6utKsLHYEQOkIgFDEyIGMHgSQs\nJGGwkGQTvjDYgbEAOcyKwICwjTn8j7iFOHSBLhDoAK2wwOjchZW0K60kdrXX9Mz0TB915vX4j6qZ\n7Zmdo3ene2q2+veJeON9883srCc73q7qp/LNTLmgOs2U+IlMSasqGEbptMMQkRlxycTPzL7bzO4y\ns3Uz2zCzzS13+BQRkVnWaNIpy2lHIbIntaucUawbqYvIztjOGb9fAL7L3efdvePubXfv7HZgIiIy\nfWG7QSevKatq2qGI7DlzVUGZKPETkZ2xncRvxd3v2PVIRETkqhMtzdEZBhw9tTntUET2nHZZQmNu\n2mGIyIy42APcT/u0mb0deA9w5im+7v7HuxaViIhcFZLlDp2R8cDqBof3L0w7HJE9pVMWxAv7ph2G\niMyI7SR+HaAPvHhLnwNK/EREZlx6+CDzI+f/3bfK855yw7TDEdlTOkVF59ChaYchIjPikomfu7/2\nSgQiIiJXn/i66+jkNXd97UHgWdMOR2RP6eQ1h5/2tGmHISIzYjt39TxsZu82s2OT8kdmdvhKBCci\nItPVuf4woyDgga/dM+1QRPaUfDiikzvPe+Hzpx2KiMyI7dzc5beB9wHXTsr7J30iIjLjlm7Yz0Yc\nsXlUiZ/IlfT5T9xKGcBTn/HkaYciIjNiO4nfAXf/bXcvJ+V3gAO7HJeIiFwFrp1fYiOMKE/cP+1Q\nRPaUWz/+CTYSIwhs2qGIyIzYTuK3ambfb2bhpHw/sLrbgYmIyPQtN+bZjGLonph2KCJ7yv1f+Qob\ncTjtMERkhmwn8Xsd8Arg6KS8HLjsG76Y2aKZfcjMvmhmHzSz+Qtsd7eZ/Z2Z3Wpmn7zc1xURke1r\nxk26YUI4XJt2KCJ7ysaxFSV+IrKjtnNXz3uA79qF1/5x4CPu/gtm9nrgJyZ956qBI+5+ahdiEBGR\nizAzumFCUvamHYrInlJurLMRxdMOQ0RmyHbu6nmTmb3fzI5P7ur5XjO7aQde+yXAWybttwAvvVAI\n24lTRER2Ry+MaVSDaYchsqfYsMdmtJ3HLYuIbM92Eqo/AN4BHGJ8V893An+4A6990N1XANz9KHDw\nAts58GEz+5SZ/eAOvK6IiDwCgzChVY6mHYbInhIXQ7phMu0wRGSGbOerpKa7v3XL8u+Z2Y9tZ+dm\n9mFgeWsX40Tuv55nc7/Abl7g7g+a2QHGCeAd7v7xC73mzTfffKZ95MgRjhw5sp1QRUTkAgZhSqvS\nNX4iV1JajOhqqqeIbMMtt9zCLbfccsntzP1C+dZkA7M3AaeAtzFOzl4JLAL/A8DdTz6aAM3sDsbX\n7q2Y2TXAR939qZf4mZ8CNt39Fy+w3i91PCIi8sj8yhOew6j9VX7stkf1di8ij8LPPvUpNOqC//TF\nr047FBF5jDEz3P1hz4LZzhm/V0zqf31O/6sYJ4KP9nq/9wGvAd4E/ADw3nM3MLMmELh718xawIuB\nNz7K1xMRkUehiBLaVT7tMET2lGaV04s01VNEds527up54y699puAd5jZ64B7mCSYZnYI+HV3/07G\n00TfbWY+ifX33f1DuxSPiIicR5VktMty2mGI7CmtqmA1bU87DBGZIZdM/Mzs1efrd/ffvZwXnkwR\n/bbz9D8IfOek/Q/AN1zO64iIyGXKGnTWlPiJXElzVc4ozqYdhojMkO1M9XzulnYGfCvwWeCyEj8R\nEXlsiJpNOscqqromDPR0HZErYa4sKJLGtMMQkRmyname/2HrspktML7Ri4iI7AHhYpPOFwOOrW9y\naHF+2uGI7AntqqButKYdhojMkEfz1W0P2K3r/kRE5CqTLM/RGRr3n9iYdigie0anLAnbC9MOQ0Rm\nyHau8Xs/Dz1jLwSeyviB7iIisgdkhw/QGcFtR9d4zpOun3Y4IntCp6hoLS9fekMRkW3azjV+/3NL\nuwTucff7dikeERG5ysTXHqaT13z53mPTDkVkz+jkFdc+6cnTDkNEZsglp3q6+8eAO4E24we362FO\nIiJ7yNzhawG47957pxyJyN5Q1zWd3HnmC7952qGIyAy5ZOJnZq8APgl8D+Nn7X3CzF6+24GJiMjV\nYen6g2zEEWsP3j3tUET2hK/e9nkCh2989tOmHYqIzJDtTPV8A/Bcdz8GYGYHgI8A79rNwERE5Opw\nzTUH2IhiRsc1y1/kSvj0x/6GhdTYn8TTDkVEZsh27uoZnE76Jla3+XMiIjIDDjYX2AxjfGNl2qGI\n7An33PllNmL9qyUiO2s7Z/z+3Mw+CPzhZPmVwJ/tXkgiInI1mUvm2AxjwsGpaYcisiesHX2AjXg7\n/6KJiGzfdh7g/mNm9t3At0y6fs3d3727YYmIyNUiDEK6YUKSd6cdisiekK+dYiNS4iciO+uC7ypm\n9kRg2d3/2t3/GPjjSf+3mNkT3P0rVypIERGZrl4Y06j60w5DZE/wYY9NJX4issMuNoH8l4CN8/Sv\nT9aJiMgeMQgTmuVo2mGI7AlRPqQb6cYuIrKzLpb4Lbv77ed2Tvoev2sRiYjIVWcQJsxVSvxEroSk\nHNINk2mHISIz5mKJ38JF1jV2OhAREbl6jcKUuaqYdhgie0JW5Ur8RGTHXSzx+7SZ/eC5nWb2r4DP\n7F5IIiJytSniRImfyBXSLHP6SvxEZIdd7Mrh/wi828y+j4cSvecACfCy3Q5MRESuHlWc0i7zaYch\nsic0q5y1tDntMERkxlww8XP3FeCbzexFwDMm3X/q7n95RSITEZGrR5zR6ZfTjkJkT5ircoZxNu0w\nRGTGbOc5fh8FPnoFYhERkatU0GrQWa+o6powuNhVAiJyudpVQZEo8RORnaVPbxERuaSw06QzDFjd\n6E07FJGZ165Kyqw17TBEZMYo8RMRkUtK9jfoDI0HVs/3eFcR2UntoiCam592GCIyY5T4iYjIJTWv\n3U9nBPedUOInsts6ZUXjwMFphyEiM0aJn4iIXFJy+DCdvOYr956YdigiM69TVBy48cZphyEiM0aJ\nn4iIXFLrumtJaufue++bdigiM83d6eQ1T3v+c6cdiojMGCV+IiJySYuHD7IRR5y8/+5phyIy045+\n9R7SEp77Tc+ZdigiMmOU+ImIyCUt37DMRhQzXL132qGIzLRPf+Sv2ExgcU6PcxCRnaXET0RELmmp\ns8hmGFOuP4C7TzsckZn15dvvYCMJMbNphyIiM+aSD3AXERFpJ22+ZA2Odf6E4KcDgjolrBsEnhF6\nRuSNcU2G1SlBnRLU47bVKUGVYVUKVYpV2aQetyOaNII5sqBFI5qjGc3Rilu04nHdzuZoJgmNhpGm\nUFXQ60G/v716MAAzCIKzy7l9Zg5sUNfHCcNTpOkmadoljruE4biYbQJd3LvUdZey3KQouqRpxtzc\nEu32EnNzS7Ra49JsjkujMS5B0KCqxscQRRCG4/p85dx1SXL+EsenaycMa+q6oixLwjAkTVOKYvw7\nOLf0+2cv5/n4Nbe+7rkxnLs8NwcHD0KnM/59yuVbfeABNuJw2mGIyAyaWuJnZi8HbgaeCjzX3T97\nge2+A/glxmcnf9Pd33TFghQREQDSKGUwWOaFn3gVb/jeX2RYjhjkQ/rFgEExHJdyQF4NqWxEHYyo\nGLcrRpQ2pGLcLhi3SzYofEi/6NMruvSLHitll0HVY1B1GVYbjLxHTg+vnHAjIywTzEMCM8wCgjkI\nOtjwICAAABe4SURBVAGBGUEQEATjOgwCwsCIg4AsCAk9JKgCKA0fOdWoouyX5P0ReW/EYGPAYKNH\nWEfMpW2acQcPWtS0KWkTe4eoXiCsFgiqfXh9I1XVpiznyPMWw+GQkydXqetVynKVsryHslylKMYl\nz1cZjVYxC8myJdJ0AXfD3Sel3tJ+qMDWdRV1XeJe4V7iXgLVmRpKwBh/tEeT5QjYRxAsEob7iKJ9\nxPEiWbaPLNtHo7FIq7WPVmuRZrNDVZUURU5ZFhRFTlHkVNV4uSxzyjKnqopJX85oVNLr1ZRlRatV\n02hUNJvjutGoSdOKLNtaO0tLixw8uJ+DB5dYXt7P8vJ+9u8fl8XFRYLgkU9GcndGoxGDwYCiKAjD\nkDiOieOYKIqIougxcwZtuHaSjVjfy4vIzpvmO8vtwMuAN19oAzMLgP8DfCvwAPApM3uvu995ZUIU\nEZHT+mFMuZ6wbzGg02lMyiKt1sXP9vT7fVZWVlhZWeHYsWNb2hscO3ac+tQp8vV1euvrbGxssL6+\nznA4pN1uc7Azz/z8DbQX2swtzpHNZ1holGVJURZn1XmRn7U8bo8oqGkvtplfatPe16Y536Sx0CA9\nnJK0EqJGRJiFEEPhBf2yTy/v0St6dPMuvfwo68VXJu1xfxzEtJIWc8n4rGQYhHhdgdeEXmFeE9QV\nkdckXtFwp/YFyqqkqjcpfYNO3GEhXWAhWWQhXWAxXWQxPbu9r7FvXGf7aKZN4uihRCYMw7PaYRhi\nFlAU47N3VeW49+l2T3Hy5ElOnjzJqVOnzqpXT97D6toqq2urHN/cILOMJE5otRKSZFziOL5gO45j\ngiCgqiKGw5B+P2AwCOn1Avr9cd3rhaysBHS7IZubTp6vUxQnqKo7qaoTwAnMxrX7xiRJ3U8cLxHH\nS5OzsQNggPsQ9wF1PaCuh5TlgLIcUFUjwjAmSRrEcUJdl9R1MUlkC6qqOpMMRlF0Vp2mKddffz03\n3XTTw8rBgweveMJYD7psRkr8RGTnTe2dxd2/CGAXf0d9HnCXu98z2fZtwEsAJX4iIldYnW0yXHVe\n+tL7GI1S8jxlNEopy5gkGZEkQ4JgRF2PqKoRVTWgKPq4l6SpkaYBaXoNzexa9mc5B9MhB+Mh10ZD\n5sMRnaUR8weGzDFkjgGNsktWdkmLLumpLtnKJklxisBr6ijGw5g6yvCoM16OYpjUnk2W4xiPY8LI\niMKAsG+EuRGtBUSxEcZGFBtRPFmODAsuMC80CSALcDMKLxl5yajOGRUFtRkWhQRRhIURFoZYGBFE\nMRaGBOGkjmIsivAgYKMesFb1WKt6nCw3Wa26nBxscHzjy9xerHOsXGNldJJj+SlWRicZek5gAXEQ\nE4fxmToKoof1xUGMmVFUBXmVM6pG5FV+dmnklIdKksMJSZhgGL2ix1wyx0K2cFZJs5RW2npY/3w2\nTyftnFUaUeMRJUtlCaPRuPT7JSsrJ1lZOcGxY6scP36Csgxwz4AGdd2gqjLqukFZNijLjKJokOcZ\nw2FAvw+bm3DiBBw7BsePQ13D8rJz8GDJ0lLJ0lLBgc6IA1GPfUGfrNxkNX+Qo4N7+fzffo2//PP3\ncXT1bh48+lVGoz6HDt3IddfdxHXX3cThwzdx+PCNHDp0DUtLMUtLMXNzDyXBpxPi0EKCYUAwCKg2\nK6rNCguNoBEQZMG4nrTDRoiFD/2+wtGAzTDehb9gEdnrrvavlK4Dtt5C7j7GyaCIiFxh193Q4xUn\nfoN/9PyvEOAYNeYONXgVUBYhcWksUDFXFcyVIxqjAUm/S9TtEvU2Sbo94uN9yiRlmDUZpQ2GacYo\nThhFKcM4YxilDKKUbpRyPEropxmDcI6eLdEPM2oPsMoIKwgqJ6ggrJ0wd4JhTVg5YV0TVBVhXRDU\nNXUZUFchdWnUVTApRl0aVRXgleHjE3aEYUUalaRpSSPJSZOCLClI45I0LkiTkjQqSSZ1GpXEYU0S\nQRJCHELghtUGHhDUBjWYG1ZBXTujomC5LLmuLAmKgjOn6U63z7PsQTC5uC6EKMBjw0PHoxoPSzxy\nPKyowxwPA+o4giTFsg6WpJBmBFmGZQ2C0yVJsSyDNIUkoQ4qRoMhw40Bo7zPsBgwygcMy5OM8gfI\niwGjYkheDBmWQ07mQ07kI+oih1EORU5U1jSIaXhIwwPS2kgriCuIasjjkEESjEscMIhD+knAIAro\nxSH9KKQfBfSikF4YgcXEdUbsGWGdElUZcZ2SFClhleJ1SOVQu1H7eGQGWU14fU14uCaondBrghqC\nXk3YdYIaQq8Ivca85oAFLBHwdAtxWnjnmdB+FnnldPOSzaMla/cc48HR/Xyh+DCDKif08X7DGsK6\nHrfdx2Nxsi7GiXESIAwcCxwL6vHFK+G4bQFY4Phk3TPDE3TTZNp/7iIyg3Y18TOzDwPLW7sAB97g\n7u/fzdcWEZGdtfGkr+Pp+/+CJ228Z3Im7KEzYx4YNAI8Cak7GXU7w+ebFO0mxcICPn89LMzj8/PY\n/CJB0iIMmwRBgzjISCxhPkgJggSz5Jx6a//4TIj7eCrf+Fq389cPX//QtXEXKnVdMRrB5mbE5mbC\n+nrGxkbGykZ6pj0ujTP1+okG3W5Kr5fQ62X0+ylJktNq9Wk0umTNTRqNTRqNdZrNdVqtddLmgDDN\nCRs5UZYTNSqSRk3arMma0Gw6raSmHZcsBDmL1YD50YhOd0SznxMMS8JBgQ0LbJgTDApsUBAMc6w/\n7rN8iEU5HhS4F1g+gmpAMexxMs5YizPWg5BNN7o15OU4iUlKJyqdsKwJK7DCsTLCyhZ10Rwnz6VT\nl0ZRx4w8oe9N+t6g7y26pPSI6HlIl5C+QT9w6qyPZT1a9GnXQ+byAe3hkHY9oFWNaPmIVj1i2Qsa\nntOsS7J6SOQlWAFUmJVgJW4VbiVYReABYRUR1BFBFRHUAXVg1DYpk3Y1GadVEFAHAR4E1BbiFkBd\nENQlQV0QeEXgJaFXBJOpu4HXRF4TBjVhDBYbRQBFCEWwpR1CEfi4L3SKAMoQyoDxWeE6GH8B4A+v\nqQ1zo/CAv3rC83ntdP/cRWQG7Wri5+7ffpm7uB+4Ycvy4UnfBd18881n2keOHOHIkSOXGYKIiAD8\n/QOv5nPX/nNe83MvJE5TkkaDsNGALBufiTrNfXyWanLbSO/1KFf6FA/2yb8wpDg2ojhekq9WFKdq\n6ioEC3ELcSKcEMdwatxznBKvB5OboRjxUkL2+AbZjRnZ48elcWNG1IkY1TV39vvc3u1ye6/H7b0e\ndw0GBEAWBKSni9nDltOqIhsOaZ4a0j6ZM9etaHUrmpsVj+tVZN2KtNsn6XWJe07UqwiHYDUM98GJ\nJxn3H4y462DMbUtNbp9vkljN4YFz/SZcs9lk/6BDc/A4egNj88SA7kbOqb5zchSwkcd0y4RemTGo\nmozKJqOiwShPyYsU9+CsX/G5kyndT3+3OlnGCIMasxozH9fBuARb+oKgJrCKIKhJkiFxPCKJh8Rx\nPikjorAkSQuSZk1iFSk1GRXNymmNAtIiJLCQwCKyMKGVJkTNmOZ+aC8H7DsUc+C6ORYPdjh+rMvR\nBzZZXxkyOFFSnawJ1ox4HebWnfk1aPSMvFXRb+ZEo4hkM2a04PSXA/oHQ3rLIZsHI07th/uXNrmv\ns8YDc2ucCNfojTbI65J2AJ0Q5gJjLnBagdEKoGFOM3AynCxwYiC3hK4lrHvMyTrmWBXyQBkwsITH\nt/bxxLlFvq69n6e39/G09gIH4phRXTOsa6hrqrrG65qyrs/0n1sqoHanBir3M+2tdeWQl84rlw/s\n1p+xiMygW265hVtuueWS29m0n8dkZh8F/rO7f+Y860Lgi4xv7vIg8Enge939jgvsy6d9PCIis+p/\nf+uv0bnnCdx9o1NERhEGVCEQ1IznMtZko5rFU87CGsxvBLQ2Q5q9kCqqGc0VlM2CupnjrQJrFUTN\nktRGNIoRWTGgMezTHPVp9btE+QArRlgxxIoB5ENsNKDwNoPs8RyfeyKnouvJ80WSjSajBB48ZGwe\nqAj2l7QPVFxzyLh+OcRXB4yO9ilWc4qTFdW6U3UN70UwiLFhgpUNwjzDQ6fMKoqsJs+cUQbDhtNv\nQL9pdFtGt2lsNo3NVsBGM2SpW3DT0SGHj5ccWIX2WkiyGVP1M4K4JGkMSLMBSdYnSftEyZAynGdY\ntxnmKaNhQtmLqbsRFEY+XzDoDOi1eqw311lrrHEqOsWp8BRrURfvNGF+Du+0KRfalO05Ru02/XaT\njbkGa1kKBNy4WfC41YJDJ3MOnChZOF7SXHWiEyHxyZh0NSU7lYHDqDUi62UEdUC1WME+iJdi0oMp\nreUWc9fMkR5IiffHxAficb0UEyxGbEQ1x/OcE0XB8aI4f53nrJUlh9KUG7OMG7OMmxqNM+1r05Rw\ncm1gXdaUp0qKEwVRJyJejgmi7d/tc1hVHC8KVvKcY+fWec5KUYzrSUw3ZBlPbjR4crPJU5rNM+1r\nk+QxczdQEZHTzAwffxt4dv+0EiUzeynwq8B+YA24zd3/iZkdAn7d3b9zst13AL/MQ49z+PmL7FOJ\nn4jILvnR3/pRnv21Z/Oix70ILx2vnLpwyrKmHJVUw4IygvKalHx/zGDJ6C8GdOehGzm9qqJbVfTq\nelxPlteLgpPFiPWyYKOq2KxqerWPz9JZReolsedEPsKqIUMy1sIFGnXB9aN1buqv8ZT1dZ5xX5cn\n3VPQOppgJ5r4qSblxhzFoEWQFNDMqecKik7OYL5gc37IycUhxxZ63Le4zv3NE6xEK5yoTrCZb9Iv\n+vSLPlEQ0YybZ5VW3DrTbsQNaq8ZFAP6RZ9BOTjTHuZDgo2AxlqD5lqTA/0DLPeXmR/OcyI6Qa/T\ngwUI9gfESzHZckZnX4el5tK4NJbY19h3Vns+myewR/7Ig4spuyXlqZJoMSJs6eHhIiKPZVdd4rcb\nlPiJiOye13/49Xzmwc9w5PFHaESNhyVDjbgBwPpwnfXROmvDtbPbo/Xzrqu9PnNHyHbSHtdph2a6\nQJYukaQLxMkCQdTGojnmrGKxXsOLjTPJWa/onb+d9xhVI9pJ+8xdKBeyhfFjFLYun75LZTpebqdt\nWnGLRtwgCnbmqgh3Z1SNGBQDirpgIVsgCXUTDxER2VlK/ERE5LJ84fgXeM+d7zmTVA2KAf2yf2a5\nX/QBmE/nmc/mzyRRD1uetE/XWZTpDJOIiMgOUeInIiIiIiIy4y6U+O3sRQIiIiIiIiJy1VHiJyIi\nIiIiMuOU+ImIiIiIiMw4JX4iIiIiIiIzTomfiIiIiIjIjFPiJyIiIiIiMuOU+ImIiIiIiMw4JX4i\nIiIiIiIzTomfiIiIiIjIjFPiJyIiIiIiMuOU+ImIiIiIiMw4JX4iIiIiIiIzTomfiIiIiIjIjFPi\nJyIiIiIiMuOU+ImIiIiIiMw4JX4iIiIiIiIzTomfiIiIiIjIjFPiJyIiIiIiMuOU+ImIiIiIiMw4\nJX4iIiIiIiIzTomfiIiIiIjIjFPiJyIiIiIiMuOU+ImIiIiIiMw4JX4iIiIiIiIzTomfiIiIiIjI\njFPiJyIiIiIiMuOmlviZ2cvN7HNmVpnZN15ku7vN7O/M7FYz++SVjFFERERERGQWTPOM3+3Ay4CP\nXWK7Gjji7s9y9+ftfljyaNxyyy3TDkFmjMaU7CSNJ9lpGlOykzSe5EqYWuLn7l9097sAu8Smhqak\nXvX0hiU7TWNKdpLGk+w0jSnZSRpPciU8FhIqBz5sZp8ysx+cdjAiIiIiIiKPNdFu7tzMPgwsb+1i\nnMi9wd3fv83dvMDdHzSzA4wTwDvc/eM7HauIiIiIiMisMnefbgBmHwV+1N0/u41tfwrYdPdfvMD6\n6R6MiIiIiIjIlLn7wy6n29Uzfo/Aea/zM7MmELh718xawIuBN15oJ+c7QBERERERkb1umo9zeKmZ\n3Qs8H/gTM/uzSf8hM/uTyWbLwMfN7Fbgb4H3u/uHphOxiIiIiIjIY9PUp3qKiIiIiIjI7nos3NVT\n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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10b0c8cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pvs={}\n",
    "for t in portfolioScheduleOfCF:\n",
    "    pvs[t] = np.zeros([1,simNumber])\n",
    "    for i in range(len(myPortfolio)):\n",
    "        myPortfolio[i].setLibor(OIS)\n",
    "        pvs[t] = pvs[t] + myPortfolio[i].getExposure(referencedate=t).values\n",
    "\n",
    "#print(portfolioScheduleOfCF)        \n",
    "#print(pvs)\n",
    "pvsPlot = pd.DataFrame.from_dict(list(pvs.items()))\n",
    "pvsPlot.index= list(pvs.keys())\n",
    "pvs1={}\n",
    "for i,t in zip(pvsPlot.values,pvsPlot.index):\n",
    "    pvs1[t]=i[1][0]\n",
    "pvs = pd.DataFrame.from_dict(data=pvs1,orient=\"index\")\n",
    "ax=pvs.plot(legend=False)\n",
    "ax.set_xlabel(\"Year\")\n",
    "ax.set_ylabel(\"Coupon Bond Exposure\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    ""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    ""
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "celltoolbar": "Slideshow",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3.0
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}